home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / program / ddj0897.zip / DYN401.ZIP / kernel / jumpto / jumpto.tc < prev    next >
Text File  |  1995-08-08  |  2KB  |  99 lines

  1. ;    Dynace jumpto function for Turbo C++ 1.00 - large memory model
  2. ;
  3.     ifndef    ??version
  4. ?debug    macro
  5.     endm
  6. $comm    macro    name,dist,size,count
  7.     comm    dist name:BYTE:count*size
  8.     endm
  9.     else
  10. $comm    macro    name,dist,size,count
  11.     comm    dist name[size]:BYTE:count
  12.     endm
  13.     endif
  14.     ?debug    S "jumpto.c"
  15.     ?debug    C E99C4CFF14086A756D70746F2E63
  16.     ?debug    C E95639FE14056F69632E68
  17.     ?debug    C E99B49FF140A6F69636F6E6669672E68
  18.     ?debug    C E90008A41416663A5C54435C494E434C5544455C7374646465662E+
  19.     ?debug    C 68
  20.     ?debug    C E90008A41416663A5C54435C494E434C5544455C7374646172672E+
  21.     ?debug    C 68
  22.     ?debug    C E95539FE140A67656E65726963732E68
  23.     ?debug    C E95539FE14076572726F722E68
  24.     ?debug    C E95539FE140A65786373746174652E68
  25.     ?debug    C E90008A41416663A5C54435C494E434C5544455C7365746A6D702E+
  26.     ?debug    C 68
  27.     ?debug    C E90B4EFF140970726F636573732E68
  28.     ?debug    C E95539FE14076572726F722E68
  29.     ?debug    C E90008A41414663A5C54435C494E434C5544455C74696D652E68
  30. JUMPTO_TEXT    segment byte public 'CODE'
  31. JUMPTO_TEXT    ends
  32. DGROUP    group    _DATA,_BSS
  33.     assume    cs:JUMPTO_TEXT,ds:DGROUP
  34. _DATA    segment word public 'DATA'
  35. d@    label    byte
  36. d@w    label    word
  37. _DATA    ends
  38. _BSS    segment word public 'BSS'
  39. b@    label    byte
  40. b@w    label    word
  41. _BSS    ends
  42. JUMPTO_TEXT    segment byte public 'CODE'
  43.    ;    
  44.    ;    void    _jumpToMethod(func)
  45.    ;    
  46.     assume    cs:JUMPTO_TEXT
  47. __jumpToMethod    proc    far
  48.     push    bp
  49.     mov    bp,sp
  50.    ;    
  51.    ;    void    (*func)();
  52.    ;     {
  53.    ;    
  54.    ;    /*     pop_this_stack_frame;    */
  55.    ;    
  56.    ;    /*     pop previous (generics) stack frame  */
  57.    ;    
  58.    ;         (*func)();    /*  must be changed to jump instruction   */
  59.    ;    
  60. ;    call    dword ptr [bp+6]
  61.    ;    
  62.    ;     }
  63.    ;    
  64. ;    pop    bp
  65. ;    ret    
  66. ;
  67. ;
  68. ;    NEW CODE:
  69. ;
  70. ;    save jump address
  71. ;
  72.     mov    ax, word ptr [bp+6]
  73.     mov    dx, word ptr [bp+8]
  74. ;
  75. ;    restore current state
  76. ;
  77.     pop    bp
  78. ;
  79. ;    restore previous state
  80. ;
  81.     add    sp,8
  82.     pop    bp
  83. ;
  84. ;    perform jump
  85. ;
  86.     push    dx
  87.     push    ax
  88.     ret
  89. __jumpToMethod    endp
  90.     ?debug    C E9
  91. JUMPTO_TEXT    ends
  92. _DATA    segment word public 'DATA'
  93. s@    label    byte
  94. _DATA    ends
  95. JUMPTO_TEXT    segment byte public 'CODE'
  96. JUMPTO_TEXT    ends
  97.     public    __jumpToMethod
  98.     end
  99.